iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
Software Development

離開C#新手村的最後試煉系列 第 30

# 試煉30 - HashSet 有用過嗎

  • 分享至 

  • xImage
  •  

開始試煉

如果要維護一個不重複的資料集合時 你會怎麼做
用List 每次檢查是否重複 還是開dictionary 呢
這時候就是 HashSet 出場的時候了
HashSet 跟 list 最大的差異 就是 HashSet 的內容是不重複的
來看一下範例code

void Main()
{
    var list1 = new HashSet<int>();
    list1.Add(1);
    list1.Add(2);
    list1.Add(2);
    list1.Add(3);
    list1.Remove(1);
    list1.Dump();

    var list2 = new HashSet<string>();
    list2.Add("x");
    list2.Add("x");
    list2.Add("y");
    list2.Add(default);
    list2.Dump();
}


加資料用Add,移除用Remove
可以放null
只會保留不重複資料

來看一下自訂class

void Main()
{
    var list3 = new HashSet<Employee>();
    list3.Add(new Employee { Id = 1, Name = "a" });
    list3.Add(new Employee { Id = 1, Name = "a" });
    list3.Dump();
}
class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
}


資料怎麼重複了 應該有讀者想到前幾個試煉有提到
自訂class怎樣算相等了吧
就留給你們實做了

結束試煉

整個System.Collections還有提供許多物件
Queue (先進先出 排隊模式 第一個 先上車)
Stack (後進先出 彈匣模式 最後裝的子彈 先擊發)
都可以想看看 有沒有適合使用的時候

30天結束了
謝謝大家


上一篇
# 試煉29 - 自訂 class 番外篇 Object 一切的開始
系列文
離開C#新手村的最後試煉30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言